home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / sendmail / sendmail-5.65 / support / getloadavg.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-09-13  |  797 b   |  48 lines

  1. /*
  2. **  GETLA -- get the current load average
  3. **
  4. **    This code stolen from la.c.
  5. **
  6. **    Parameters:
  7. **        none.
  8. **
  9. **    Returns:
  10. **        The current load average as an integer.
  11. **
  12. **    Side Effects:
  13. **        none.
  14. */
  15.  
  16. #include <sys/types.h>
  17. #include <sys/ioctl.h>
  18. #include <nlist.h>
  19.  
  20. struct    nlist Nl[] =
  21. {
  22.     { "_avenrun" },
  23. #define    X_AVENRUN    0
  24.     { 0 },
  25. };
  26.  
  27. /* ARGSUSED */
  28. getloadavg(avenrun, n)
  29.     double *avenrun;
  30.     int n;
  31. {
  32.     static int kmem = -1;
  33.     extern off_t lseek();
  34.  
  35.     if (kmem < 0) {
  36.         kmem = open("/dev/kmem", 0, 0);
  37.         if (kmem < 0)
  38.             return (-1);
  39.         (void) ioctl(kmem, (int) FIOCLEX, (char *) 0);
  40.         nlist("/vmunix", Nl);
  41.         if (Nl[0].n_type == 0)
  42.             return (-1);
  43.     }
  44.     if (lseek(kmem, (off_t) Nl[X_AVENRUN].n_value, 0) == -1 ||
  45.         read(kmem, (char *) avenrun, sizeof(avenrun)) < sizeof(avenrun))
  46.         return (-1);
  47. }
  48.